Michelle Eichelberger: Good morning, everyone. I'm going to just go ahead and get started. We have a lot to cover today. Welcome to our 5th session in our series on Alma analytics. And today we're going to talk about sharing reports. And we have a special guest. Today. I'm very excited to welcome Justin dice from University of Buffalo, and we're going to be talking about how you can use some code to embed your reports on web pages. But 1st I'm going to just go ahead and get started.
Michelle Eichelberger: Everybody's seeing my screen. Right?
Michelle Eichelberger: Great, awesome. Thanks so much. Okay.
Michelle Eichelberger: so let's get going here.
Michelle Eichelberger: So we're gonna talk about
Michelle Eichelberger: creating objects, pinning objects, widgets. We're going to fly through that section. I did already talk about this a little bit in our intro to analytics session, but it kind of melded with this information, so I thought, I'll plunk it in here again. We'll whiz through this, and then we'll spend most of our time talking about embedding reports in web pages.
Michelle Eichelberger: and Justin and Liz Simmons from Genesee, and I presented on this at Enoch last year, but we thought it was worth representing to Suny as a whole.
Michelle Eichelberger: So.
Michelle Eichelberger: as I mentioned, we did talk about this before. These are the different ways that you can share reports. You can do widgets. You can mail reports to people. You can have
Michelle Eichelberger: scheduled things pop up. There's dashboards you can create. We're not going to take a deep dive into this. But analytics is very powerful.
Michelle Eichelberger: So
Michelle Eichelberger: the analytic analytics object list is where you're going to do your sharing. It's where you're going to set up things to be shared. And it's under analytics, my analytics, analytics, object list.
Michelle Eichelberger: And to add a new object. You just click over here under actions and say, add new Alma analytics, object. Prima has a separate analytics. We'll talk about that in a couple of weeks. I'm going to do a just kind of general primo updates thing. And we'll spend a couple of minutes talking about primo analytics. But basically today, we're just focusing on Alma.
Michelle Eichelberger: And then once you pick that the object page appears, and that's where you can change how you want the object to work.
Michelle Eichelberger: You pick the object, you can schedule it. You can create a widget.
Michelle Eichelberger: You can PIN it to your
Michelle Eichelberger: my analytics area, which is handy. If you have reports that you're going to use all the time.
Michelle Eichelberger: You know, if you
Michelle Eichelberger: PIN 30 reports, it so sort of loses the effectiveness of having things pinned to the top of your list. But you are able to do that. It'll tell you once it's been pinned, and once it's been pinned it's going to show up here on the right hand side underneath your search. Analytics object.
Michelle Eichelberger: You can also add things as a widget. And we had a analytics interest group meeting between the last session that I did on this and this one, and I learned a thing which was very helpful, because when I demoed this in that last session it didn't work. So it turns out you have to actually add roles to the object in order to use it as a widget. So you have to say who you want it to be available to, but that will allow you to
Michelle Eichelberger: get it to show up in your widgets list.
Michelle Eichelberger: So once you have clicked on the add, as a widget in the analytics object list. It's gonna say, add it as a widget, and then you should see it in your manage widgets list, and then you can add it to your home screen
Michelle Eichelberger: to schedule a report. These are the steps for that you click on in that analytics object. You click on schedule report, and then you can decide how often you want it to run. You can decide, you know, if you want to subscribe to it, it'll send you an email once it's run, there's you have several options.
Michelle Eichelberger: And then this is the is again. This is all in the analytics object list. You can decide who you want to send it to, so you can send it to people outside of Alma. So if you have administrators who would like to see the report, but they don't have an Alma account. You could still set them up, and it will be emailed to them. You can also set it to go to people by role. So anybody with these particular roles would get that
Michelle Eichelberger: report.
Michelle Eichelberger: Okay? So now the meat of the session, we're going to spend some time talking about how to embed reports in web pages. We're going to talk about the analytics Api piece of it.
Michelle Eichelberger: where you want to put the report to make it shareable. And then Justin's gonna talk about the data tables code that he created, which is awesome and
Michelle Eichelberger: then we'll do some live demoing.
Michelle Eichelberger: So basically.
Michelle Eichelberger: there are several steps involved with this. So you have to create a report and analytics that you want to be able to embed somewhere, and it has to be saved to your shared folder. So you have your personal folder and analytics, and then you have a shared folder. If it's not in the shared folder. It can't be found. So it's got to be in that shared folder. You're gonna copy the and I have more specific details on this. But just as an overview, you're gonna copy the path of the report. You also have to create an analytics Api key in the developer network
Michelle Eichelberger: you can create. Anyone can create an account in the developer network. We have seen people run into problems where their account is not affiliated with the campus. So when you go to try to create an Api, the developer network is like, we don't see you affiliated. You don't have the rights to do this for your campus, so you might have to submit an ex Libra ticket to get your account affiliated.
Michelle Eichelberger: sls also has Admin user accounts for everybody. So, you know, if you think this is the only time you're ever gonna need to do this, just reach out to us, and we can generate an Api key for you and send it to you. No big deal.
Michelle Eichelberger: Then you can test the call by putting in your Api key and the report path. This is really helpful. We had a situation recently where I had set this up for somebody. It was working beautifully, and all of a sudden it stopped working, and this was a way for me to check and see
Michelle Eichelberger: like what's going on. And it turned out something had happened with the anonymous access to this, and it was no longer allowing you to come in anonymously, so we were able to get it fixed. We had to submit an ex libers ticket. But this is a really handy way to just see what's going on. See if it's working
Michelle Eichelberger: and then Justin's gonna talk about the code, and
Michelle Eichelberger: and then we'll kind of discuss how you would put that into a web page or a libguide. There's this really handy area in the developers network that talks about doing this. So this is a link to that documentation which is kind of where we got the idea. Justin did the code magic, but we found out that this was even possible from this documentation.
Michelle Eichelberger: Okay, so once you get into the developer network.
Michelle Eichelberger: there's this area at the top that says, build my Apis, and you're gonna manage your keys. You're going to create a new key for analytics.
Michelle Eichelberger: So once you get in there, you just want to do add Api key. I've already added analytics in this example, but it would probably be if you've never created a key, there would be nothing in there. So you're gonna create a new key.
Michelle Eichelberger: This is what the key creation page looks like. You can give it a name, you can call it whatever you want to call it. You can add a description if you want. You don't have to, but you want to make sure it's enabled. I never do this. I never restrict by IP, I think that's too restrictive. And it, you know, if you were putting something on your web page, you would want it to be open for everybody.
Michelle Eichelberger: And then the type of key you want for this particular code is, you want an analytics key production, and you want read only
Michelle Eichelberger: so once you do that, there's a save option down at the bottom, and then you're going to get a list of Apis. Your key is going to be hidden. But if you click on the little eyeball icon and click copy, that'll give you the key, and that is one of the things that you need for this process.
Michelle Eichelberger: So I mentioned, you want to create your report under shared folders.
Michelle Eichelberger: So you know, on the left hand side it's it's like your campus name, and then there's various levels underneath that you can put it under us. You know. You can use as many folder levels as you want, and the more folder levels you create the longer the link
Michelle Eichelberger: get so that you might want to think about that when you're creating your reports. But basically the path you need. Once you get in and open to edit your report, once you've created it up at the top of the screen in the URL. This is what you want, everything from this to the end. That's your path.
Michelle Eichelberger: So then,
Michelle Eichelberger: we have the pieces we need. How could we actually get this stuff into a web page. So I'm going to turn it over to Justin and let him take over from here.
Justin Dise (UB): Wonderful. Thank you. Michelle.
Justin Dise (UB): everybody hear my audio. Okay?
Justin Dise (UB): Wonderful.
Justin Dise (UB): So yeah, the challenge
Justin Dise (UB): it was, you know how to take that Xml output from that Alma analytics Api, and present that data
Justin Dise (UB): as a usable table on a web page.
Justin Dise (UB): I'm sure there's many ways one could tackle this problem.
Justin Dise (UB): The route I took was I wanted to really have a solution that could be used by anyone
Justin Dise (UB): without needing any coding language or
Justin Dise (UB): it support to make it work.
Justin Dise (UB): So I settled on writing the Javascript that would run on the client side. So the browser
Justin Dise (UB): that basically, you can copy and paste into a web page such as a webguide.
Justin Dise (UB): and you wouldn't need any sort of server side scripting or or assistance to get it to work
Justin Dise (UB): next slide, please.
Justin Dise (UB): Alright. So here's a snapshot of what that kind of Xml data looks like.
Justin Dise (UB): You see, there's a
Justin Dise (UB): the
Justin Dise (UB): In that kind of Xsd sequence
Justin Dise (UB): section. We see all the information on the various column header names.
Justin Dise (UB): and then below that you'll have
Justin Dise (UB): a bunch of rows.
Justin Dise (UB): This screenshot only fits one rows, but for each
Justin Dise (UB): row of data you'll have
Justin Dise (UB): a separate row.
Justin Dise (UB): and you'll notice there's a column 0 under that row, which is the value of 0.
Justin Dise (UB): I don't know why
Justin Dise (UB): the analytics Api
Justin Dise (UB): delivers this, but
Justin Dise (UB): every report you run you'll have a column 0
Justin Dise (UB): and every value will be 0
Justin Dise (UB): next slide, please.
Justin Dise (UB): Okay, so this is kind of a little pet peeve of mine.
Justin Dise (UB): This is a an actual image of myself, looking very much like Michael Scott.
Justin Dise (UB): venting my frustration on why the Api does not deliver Json, and only Xml.
Justin Dise (UB): Xml is fine. I'm sure there's some people out there who love their Xml. And that is entirely fine, and I respect that opinion. But when working with Javascript in particular.
Justin Dise (UB): Json is what is a much more user friendly format to have data delivered in.
Justin Dise (UB): But that's just me venting
Justin Dise (UB): vent is over. We can move on
Justin Dise (UB): so the code itself, the overview of it.
Justin Dise (UB): I'm not going to run through every step, so don't worry. But essentially, in a nutshell the code is using Javascript to fetch the data from the analytics. Api.
Justin Dise (UB): Then it's parsing through that lovely Xml data.
Justin Dise (UB): And from there it takes that data and builds just a bare bones. HTML table.
Justin Dise (UB): And then that table isn't spiced up and made pretty using a 3rd party, Javascript library called data tables.
Justin Dise (UB): So the data tables.
Justin Dise (UB): Functionality is what kind of gives it
Justin Dise (UB): usability. So pagination sortable columns search box
Justin Dise (UB): all that jazz. That's really kind of where a lot of the magic happens with that data tables
Justin Dise (UB): next slide, please.
Justin Dise (UB): Okay, so data tables, we just talked about it. But
Justin Dise (UB): it is an open source, open source tool. It uses the Jquery Javascript Library.
Justin Dise (UB): Basically, all you need to do is link to a couple of dependency files. So a Javascript file for functionality and a Css file for styling and then point data to data tables to your data source.
Justin Dise (UB): which can be, as I said. An HTML table can also be a Javascript array or object. It could be Json. So super super awesome stuff, relatively
Justin Dise (UB): simple and painless to use
Justin Dise (UB): next slide, please.
Justin Dise (UB): and that's all the slides I have. So I have my code
Justin Dise (UB): on this Github page which I have open already on my computer. So
Justin Dise (UB): if Michelle, you want to give me
Justin Dise (UB): sharing privileges.
Michelle Eichelberger: Yeah, you should be all set. Yeah.
Justin Dise (UB): Wonderful.
Michelle Eichelberger: Thanks for you.
Justin Dise (UB): Okay. So let me see, get this all set up here.
Justin Dise (UB): Okay, are you? Seeing the Github page
Justin Dise (UB): make sure I'm sharing the right screen here.
Michelle Eichelberger: I think so. Yes, yep.
Justin Dise (UB): Wonderful. You're good.
Justin Dise (UB): Okay? So here's the Github page, where there's just a couple of documents here and instructions on how to use the code.
Justin Dise (UB): Some of it is kind of some repetition of the information that Michelle just shared.
Justin Dise (UB): But it's not too complicated. So
Justin Dise (UB): let's kind of run through it and see how easy it is to kind of take report data
Justin Dise (UB): and put into a web page.
Justin Dise (UB): So 1st thing we're gonna do is we're going to
Justin Dise (UB): create a libguide.
Justin Dise (UB): since that's easy enough. And many people have access to web guides
Justin Dise (UB): oops. That's gonna be an example later. Okay?
Justin Dise (UB): So I created libguide already.
Justin Dise (UB): So the 1st step we want to do is to link to the data table Javascript and Css. Files
Justin Dise (UB): which I have listed here in the dependency dependencies.
Justin Dise (UB): Text here.
Justin Dise (UB): So there's 3 Css files and 3 Javascript files to link to.
Justin Dise (UB): since we just need to copy that
Justin Dise (UB): and paste it.
Justin Dise (UB): Now you can paste it at the system level.
Justin Dise (UB): But I think it makes more sense for this application to just paste it at the
Justin Dise (UB): guide level.
Justin Dise (UB): so you can go into your custom. Guide
Justin Dise (UB): Javascript, Css. Section just paste that in
Justin Dise (UB): hit, save
Justin Dise (UB): that's all we need to do there.
Justin Dise (UB): The next step here
Justin Dise (UB): is to kind of copy and paste the HTML code itself.
Justin Dise (UB): which is in this
Justin Dise (UB): text file. Here.
Justin Dise (UB): I'm going to copy and paste this.
Justin Dise (UB): You can. You can paste this into a
Justin Dise (UB): just a generic word document, a notepad file.
Justin Dise (UB): I'm going to put it into
Justin Dise (UB): visual studio code just so we can kind of see it looking a little nicer.
Justin Dise (UB): There's a couple variables here we need to update.
Justin Dise (UB): We need to get our Api key in there.
Justin Dise (UB): So I have ours copied and saved.
Justin Dise (UB): So I'll throw that in there real quick.
Justin Dise (UB): And then again the path the initial mentions to your file.
Justin Dise (UB): I have a path here to a
Justin Dise (UB): report I just made
Justin Dise (UB): yesterday.
Justin Dise (UB): It's not a very exciting report, but we'll see it in action
Justin Dise (UB): then. Lastly, you want to change the primo based URL
Justin Dise (UB): and your primo view. Id.
Justin Dise (UB): So if you don't know what that is, you can just go to your
Justin Dise (UB): primo instance.
Justin Dise (UB): Kind of is your base URL here.
Justin Dise (UB): and then, if your did be found here.
Justin Dise (UB): So you can just copy and paste those into the file
Justin Dise (UB): here. And then, essentially, that's really all you need to do.
Justin Dise (UB): And there's some other options. Later, we're gonna customize. But we'll get there in a moment. But to actually get it to work and
Justin Dise (UB): get your data and put it into the page. That's really the only things you need to change.
Justin Dise (UB): So I'm going to go ahead and just copy and paste all of this
Justin Dise (UB): and go back to web guides.
Justin Dise (UB): Now, I could create boxes and actually put the code
Justin Dise (UB): here on the page itself. But
Justin Dise (UB): I find the best
Justin Dise (UB): way to go about it is to create a widget
Justin Dise (UB): in Lubguides.
Justin Dise (UB): so you can go to
Justin Dise (UB): contents. Go to your assets.
Justin Dise (UB): add a content. Item, the media slash slash widgets.
Justin Dise (UB): You can name it.
Justin Dise (UB): Xml.
Justin Dise (UB): People test
Justin Dise (UB): 2. I think I have one called one already.
Justin Dise (UB): Now you can copy and paste that code into here, and you can see this box is pretty small, which is why I recommended editing this
Justin Dise (UB): in a separate
Justin Dise (UB): word.
Justin Dise (UB): editor, before
Justin Dise (UB): putting it into here.
Justin Dise (UB): There are some other sections here. We're gonna modify later.
Justin Dise (UB): I'm going to save that.
Justin Dise (UB): And now, if I go back to my
Justin Dise (UB): live guy here.
Justin Dise (UB): make a box.
Justin Dise (UB): This could just be a
Justin Dise (UB): able
Justin Dise (UB): if you add that
Justin Dise (UB): widgets
Justin Dise (UB): must have got rid of the other one.
Justin Dise (UB): Okay.
Justin Dise (UB): save it similar truth. See if it all works.
Justin Dise (UB): Okay. Oh, it worked wonderful.
Justin Dise (UB): Alright. So I will
Justin Dise (UB): view this real quick.
Justin Dise (UB): So we have our 1st pass at getting the data from a report.
Justin Dise (UB): This is a report of all
Justin Dise (UB): physical items that have been received
Justin Dise (UB): in the last 30 days.
Justin Dise (UB): because I needed a report, and that sounded like something that would be easy to put together.
Justin Dise (UB): Now, the order is kind of wonky. So we definitely gonna want to rearrange these these columns. I find that the
Justin Dise (UB): Api kind of delivers the columns in its own.
Justin Dise (UB): It's order based on
Justin Dise (UB): alphatized by section of
Justin Dise (UB): stuff. Yeah, it's kind of awkward. But we can rearrange these using data tables.
Justin Dise (UB): We see, some of the central functionality is here. We can actually slide and rearrange these, I think.
Justin Dise (UB): in this version, can I? Maybe not in this version.
Justin Dise (UB): But we can search
Justin Dise (UB): 4
Justin Dise (UB): book. So you have all material types of books show up.
Justin Dise (UB): You could actually
Justin Dise (UB): sort columns
Justin Dise (UB): so very, very useful, much more useful than a just a
Justin Dise (UB): boring HTML table would be. This is all because of data tables.
Justin Dise (UB): So how do we rearrange some of these columns?
Justin Dise (UB): Well, we can
Justin Dise (UB): do that by
Justin Dise (UB): go back to instructions here.
Justin Dise (UB): customizing the data table options.
Justin Dise (UB): I have a link here that goes to all the various options you can put into data tables.
Justin Dise (UB): But I have some options already in the code ready to go.
Justin Dise (UB): I will go back to this view so we can see that better.
Justin Dise (UB): You get a little bigger.
Justin Dise (UB): Alright. So at the bottom. Here
Justin Dise (UB): in the convert HTML table table to data table section of the code.
Justin Dise (UB): all this green text here are kind of comments. So kind of instructions are describing how something works.
Justin Dise (UB): So
Justin Dise (UB): here's where we have some options here.
Justin Dise (UB): options.
Justin Dise (UB): So by default, I am hiding
Justin Dise (UB): column 0,
Justin Dise (UB): because we saw column 0 was just called
Justin Dise (UB): Column 0, and it has values of 0.
Justin Dise (UB): So I'm always hiding that 1st column. There
Justin Dise (UB): we can reorder the columns using this call reorder option.
Justin Dise (UB): So to use that I would just hit.
Justin Dise (UB): Get rid of these 2 slashes here.
Justin Dise (UB): make that code active.
Justin Dise (UB): and I can reorder the columns
Justin Dise (UB): as I see fits now, the numbers will be based on
Justin Dise (UB): their position.
Justin Dise (UB): So com 0 is hidden. So this would be 0. It's hidden.
Justin Dise (UB): Column 1, 2, 3, 4, 5, 6, 7, etc.
Justin Dise (UB): And to use the column reorder, you do need to
Justin Dise (UB): have every column number listed here.
Justin Dise (UB): So if you're missing a column number, it'll give you an error and then just won't reorder the columns.
Justin Dise (UB): So I'm gonna do this order 0 2, 3, 1, 4, 5, 6, 7,
Justin Dise (UB): and then one other option I have in here that can be used. You can choose your default
Justin Dise (UB): order
Justin Dise (UB): so you can pick your column number, for instance, column
Justin Dise (UB): 6,
Justin Dise (UB): and you can set that to be ascending or descending, so the table will initialize with that column
Justin Dise (UB): being the
Justin Dise (UB): the order. So
Justin Dise (UB): if you wanted, like a a date column to be how things are sorted by default, you can choose that column number and then choose it to be ascending or descending.
Justin Dise (UB): We'll just leave that one commented out for now. So I'm gonna copy all this again.
Justin Dise (UB): Go back to our
Justin Dise (UB): widgets.
Justin Dise (UB): Gmail table.
Justin Dise (UB): Now I'm going to paste that back in.
Justin Dise (UB): save that.
Justin Dise (UB): And hopefully, this order gets a little better.
Justin Dise (UB): Wonderful. So now we see we have.
Justin Dise (UB): or Mms. Id
Justin Dise (UB): title, author, library, name, library, location, material type, and our received date.
Justin Dise (UB): Now, if I want to go a step further and hide columns, I could do that as well.
Justin Dise (UB): We saw I'm already hiding column 0.
Justin Dise (UB): So if I wanted to hide the Mms. Id. For instance, I could just go into the code
Justin Dise (UB): and
Justin Dise (UB): add
Justin Dise (UB): an additional column number, which is column 2. In this case. I wanted to hide that.
Justin Dise (UB): but I'll leave it there for now.
Justin Dise (UB): and that's kind of it in a nutshell.
Justin Dise (UB): very painless.
Justin Dise (UB): only a couple variables that
Justin Dise (UB): to change, and just a couple options in data tables to
Justin Dise (UB): manipulate. And you get this nice functioning
Justin Dise (UB): paginated table.
Michelle Eichelberger: Hey, Justin, I still can't get over this. I just love this so much. Can you change the column name? I've had a situation where I've tried to change it in analytics, but it doesn't take the modified name because it's taken the underlying data.
Justin Dise (UB): Yes, I believe there's a data tables option for that.
Justin Dise (UB): I've done it in just
Justin Dise (UB): the code itself, like manually change the name before I send it to date data tables. But there should be a data tables option to say, Hey.
Justin Dise (UB): you know, column 2 rename to this.
Justin Dise (UB): and we can explore the the data tables documentation to to find out what that that option variable is.
Justin Dise (UB): But it should be relatively easy. I would think.
Michelle Eichelberger: Cool, and Sue from Cortland has a question. Would it? How complicated would it be to have, like a toggle to show hide a column.
Justin Dise (UB): Data tales has lots of options. So I wouldn't be surprised if that's a function they have.
Justin Dise (UB): I haven't explored that myself, so I don't know the answer.
Justin Dise (UB): But I wouldn't be surprised if data tables can do that. There's a lot of
Justin Dise (UB): features and options that I'm not using that I've I haven't even played around with
Justin Dise (UB): The one option I have enabled is
Justin Dise (UB): oops
Justin Dise (UB): to change some Css. To make that not transparent, but it does anchor the column names
Justin Dise (UB): to the top when you scroll, and that's a separate
Justin Dise (UB): kind of file, add on which is why there are multiple dependency files that are copied over.
Justin Dise (UB): Yeah, there's lots of crazy, cool things you can do with data tables. And I've
Justin Dise (UB): really only kind of scratched the surface for what I needed to do.
Justin Dise (UB): But there's plenty of other options we could you you could explore yourselves.
Michelle Eichelberger: Yeah. And the only other Css thing that I've done when I've helped people set this up is I've made the entries per page. That search box is sometimes squished up. So I've made that a little taller, and you can inspect the code and figure out what code is. And I tend to do that right in the guide and that, you know, it's
Michelle Eichelberger: people who have Libguide Cms have more options for putting code actually in a specific guide rather than site wide. But if you don't have Libguide Cms, you can still use the the Javascript code that you need. But you just have to put it in the asset like at the top. And if you have questions about that, just reach out because I have had to set it up at places that don't have Libguide Cms.
Justin Dise (UB): Yeah. And you can also reach out to me if you're
Justin Dise (UB): interested in using this code or try and use it. And something's not working. You have questions. Want to know. If it could do this, I'm happy to explore that as well, so I can learn more about
Justin Dise (UB): the options available. So a couple of use cases, I mean, why would you want to use this? Well, I mean, you could see it's easy to share. The data is
Justin Dise (UB): relatively current.
Justin Dise (UB): it updates like nightly. So
Justin Dise (UB): any changes.
Justin Dise (UB): The data might not necessarily reflect right away, though, if you went into analytics and reran the report that should
Justin Dise (UB): update
Justin Dise (UB): the data manually that way. But just to have the the Alma data itself
Justin Dise (UB): get updated. That's gonna be kind of a nightly process. So if you see, like someone received today, and it's not listed in this
Justin Dise (UB): list, for instance, you know, it'll be there tomorrow, probably.
Justin Dise (UB): So super cool, and
Justin Dise (UB): again we mentioned.
Justin Dise (UB): where is it? At
Justin Dise (UB): Tennessee?
Justin Dise (UB): It was kind of the
Justin Dise (UB): the use case that got us looking into this path. So
Justin Dise (UB): she's using it here as a kind of a quick course reserves list.
Justin Dise (UB): which I think it's. You know, it's easy to
Justin Dise (UB): navigate and look at. It's condensed. It's on one page.
Justin Dise (UB): It's great. It's under 1,000 entries via analytics. Api call up to retrieve up to 1,000 rows of data at a time. So after that, you need to
Justin Dise (UB): make additional calls to get
Justin Dise (UB): more data.
Justin Dise (UB): And that's a point actually worth worth noting is
Justin Dise (UB): if you have a really complex report. And there's a lot of data in there like
Justin Dise (UB): thousands, 10 tens of thousands of rows.
Justin Dise (UB): it can get pretty slow to actually
Justin Dise (UB): build the table, because it's waiting for all that data from the Api to come in. It's not the fastest Api in the world, so
Justin Dise (UB): be wary. Don't put any like massive reports on the web, because it might take forever to load, or might just even time out after a while.
Justin Dise (UB): But anything under a few 1,000
Justin Dise (UB): rows should have no problem.
Michelle Eichelberger: And apologies if you already mentioned this, Justin. But even if you don't want to display the Mms. Id, it's a good idea to put it in your report, because then you can use that for the linking to Primo, which is beautiful. I'm so happy about that.
Justin Dise (UB): Saying, Yeah, thank you. Thanks for mentioning that I forgot to touch upon that. So
Justin Dise (UB): there is a variable
Justin Dise (UB): here
Justin Dise (UB): in the code which is.
Justin Dise (UB): add links to titles. You can set that to true or false
Justin Dise (UB): if you set it to. True, it's going to look for
Justin Dise (UB): 2 fields
Justin Dise (UB): in your report. One is a title field.
Justin Dise (UB): and one is an Mms. Id. Field.
Justin Dise (UB): So it needs both of those to work. But if both those fields are present it will.
Justin Dise (UB): as we see here, it'll turn your your title field into a links so you can click on that and
Justin Dise (UB): get to
Justin Dise (UB): the record.
Justin Dise (UB): Just makes it a little bit more interactive and and
Justin Dise (UB): friendly rather than just copying and pasting
Justin Dise (UB): Isbns or titles or
Justin Dise (UB): Ms. Ids.
Justin Dise (UB): yes, you do want to have the Ms. Mms. Id. In there to use that functionality.
Justin Dise (UB): But then you can. You can use the options to hide that column if you don't want to display to the user
Justin Dise (UB): one other example of a
Justin Dise (UB): report that we
Justin Dise (UB): did see her.
Justin Dise (UB): Where is that?
Justin Dise (UB): We were playing around with the
Justin Dise (UB): relatively recent Cdi coverage report
Justin Dise (UB): and analytics
Justin Dise (UB): to see if we can get a
Justin Dise (UB): a list of
Justin Dise (UB): all of our electronic collections and
Justin Dise (UB): whether they're services or portfolios, or what the Cdi
Justin Dise (UB): coverages. So we were playing around with this. And I did some additional
Justin Dise (UB): code to add some
Justin Dise (UB): conditional statements to change some of these values. But essentially, it's using the same code
Justin Dise (UB): and giving us a nice place to kind of look at this data, share this data
Justin Dise (UB): with any interested party that might want to know what the coverage is for certain collections. We have
Justin Dise (UB): just another possible use case.
Michelle Eichelberger: Yeah, I've helped people with the Course reserve browsable list also new titles. So there's a ton you can do with it. It's super flexible.
Justin Dise (UB): Like new titles. New additions would be a very like
Justin Dise (UB): popular kind of use. Case scenario
Justin Dise (UB): better than the
Justin Dise (UB): you know. Scrubble
Justin Dise (UB): widgets with, you know, cover images that don't always look great.
Michelle Eichelberger: Yeah, with like 10 titles. That's it, that's all. You got. 10 to 20. Did you already mentioned the security vulnerability.
Justin Dise (UB): That's that's the next point. So.
Michelle Eichelberger: Oh, sorry!
Justin Dise (UB): Yeah, because this
Justin Dise (UB): code is just in the browser.
Justin Dise (UB): You can.
Justin Dise (UB): Anybody can inspect the page and see that Api key.
Justin Dise (UB): So
Justin Dise (UB): if you're not comfortable with that. Then maybe keep this on pages that are internal use only
Justin Dise (UB): definitely make sure you're setting that Api key to read, only so nobody can just take the Api key and start
Justin Dise (UB): messing up your Alma data.
Justin Dise (UB): I'm not too concerned about it because it is read only.
Justin Dise (UB): But you.
Justin Dise (UB): That is a point worth noting. So again, I can inspect this page right now.
Justin Dise (UB): I could go through all the code and search and find a
Justin Dise (UB): what that Api key is because it's again, it's just code within the the page itself.
Justin Dise (UB): So that is something to worth considering.
Justin Dise (UB): Now, again, if you really want to use this kind of functionality, but we don't want that Api key to be made visible. You
Justin Dise (UB): can do more of a server side
Justin Dise (UB): code
Justin Dise (UB): and then deliver it to the page that way. But then that's
Justin Dise (UB): it's not a copy and paste solution like like this is you're gonna have to work with.
Justin Dise (UB): Maybe your your it department, or somebody who can help set up that kind of server
Justin Dise (UB): side scripting for you. But it it's more than doable.
Justin Dise (UB): I'm happy to answer any questions people have.
Justin Dise (UB): or anybody out there who really loves Xml. And hates Json and wants to
Justin Dise (UB): duke it out. I mean, I'm here for it.
Michelle Eichelberger: Yeah. Feel free to unmute yourselves or type in the chat. If you have any questions.
Michelle Eichelberger: the possibilities with this are just limitless.
Justin Dise (UB): I'm gonna close this so I can see the chat. See if there's anything going on here.
Michelle Eichelberger: And I would say, too, if you don't have Libguides, you still could put this in a web page. But you may run into problems with your campus not wanting to put Javascript on a web page. So that is something to bear in mind.
Michelle Eichelberger: Yeah.
Justin Dise (UB): For sure. Yeah, Libguides is a pretty
Justin Dise (UB): accessible and painless option. But yeah, if you don't have web guides.
Justin Dise (UB): there are other options as well.
Justin Dise (UB): as long as you can put Javascript into a web page.
Justin Dise (UB): you can do it.
Michelle Eichelberger: And you don't have to be a Javascript expert to do this. I'm like, I fumble around with it, and I can make this work.
Justin Dise (UB): I'm not a Javascript expert by any means, you know, I know enough to get by. So
Justin Dise (UB): again, just a couple of variables. You gotta change. And you're
Justin Dise (UB): you're well on your way to success.
Justin Dise (UB): Great.
Michelle Eichelberger: Well, if there aren't any questions we'll close up. I will post the recording for this session.
Michelle Eichelberger: Susan, did you have a comment.
Susan Davis (UB): Well, I mean, Justin is my colleague, and it always blows me away off his
Susan Davis (UB): creative thinking. But I'm trying to.
Susan Davis (UB): just because of what? What I've just seen. Think of
Susan Davis (UB): again. Use cases, for you know internal purposes that you know. Not necessarily. I don't want a widget in in Alma, you know my Alma instance, but you know we have catalogers on the Attendee list. We have acquisitions, people, resources, and and we were just talking about how, for many of us like our day to day, job prevents us from.
Susan Davis (UB): even if we were so inclined, you know, playing with these things. So Justin's there to to play with these things, and and how you know, like what kind of acquisition z things acquisitions, colleagues out there might might think about for for reports like this
Susan Davis (UB): that you know again, we wanted to send something to selectors about this, that or the other. It's just kind of like, you know there ought to be way more applications that Justin could just like crank out like.
Susan Davis (UB): you know.
Susan Davis (UB): there's no tomorrow.
Justin Dise (UB): Nancy had a comments about how easy or hard would it be for a user to add code from the the data tables site to add functionality.
Justin Dise (UB): like showing or hiding columns. Which apparently is a feature functionality that they add that they have
Justin Dise (UB): it should be straightforward, well, relatively straightforward depending on.
Justin Dise (UB): It's probably just an option
Justin Dise (UB): column. Visible toggle.
Justin Dise (UB): Yeah. Shouldn't be overly complex. And I'm happy to assist anyone trying to play around with any
Justin Dise (UB): data tables, options listed on their site.
Justin Dise (UB): Yeah, hiding and showing columns would actually be really cool.
Susan Davis (UB): Yeah, that would be fun.
Susan Davis (UB): But like.
Susan Davis (UB): if we wanted a list of.
Susan Davis (UB): you know, like, when when is the
Susan Davis (UB): ex libra Cdi update, or, you know, like the the various updates. When's the latest update for a particular vendor file in in Alma, that information ought to be able to be pulled out into a report. Correct?
Susan Davis (UB): We think.
Susan Davis (UB): Michelle, I don't know that I mean that date. And this stuff is there. I mean, just again, like. Sometimes you have questions from people like, you know.
Susan Davis (UB): when's the last time this was updated with the metadata, the new metadata, etc. And oh, it's a batch. So it was done 6 weeks ago.
Susan Davis (UB): or something, you know, like
Susan Davis (UB): and sort by by most recent update, or the other way around the oldest, etc. I'm not trying to make work for people, but you know, we get we have people here who ask really interesting questions, who aren't me.
Michelle Eichelberger: Yeah, I mean, buffalo is so complicated with you have so many resources, and your faculty are really engaged. So I can see
Michelle Eichelberger: those kinds of things having value for a big place like Buffalo.
Michelle Eichelberger: Great anything else.
Michelle Eichelberger: All right. I'm going to stop the recording. Thank you all so much for coming, and our last session in the series will be on Tuesday, and I'll be talking about e-resources analytics. But also I'm going to talk about
Michelle Eichelberger: kind of clean up things that don't use analytics, because, honestly, I don't use e-resources, analytics that much. I do a lot in all title searching, and those kinds of things so stay tuned for that information.