<div class="enablevue">
    <div class="block searchlistblock">
        <div class="block-header ">
            <h2 class="heading-level-2">myHeading</h2>
        </div>
        <searchlistblock v-cloak room-text="Rum" personel-layout="True" init-data="{&quot;ShowAllSearchSection&quot;:true,&quot;CurrentPageId&quot;:198772,&quot;currentPageLink&quot;:&quot;https://miun_extern_local_v1/ny-design/blocktyper/searchlist/&quot;,&quot;lang&quot;:&quot;sv&quot;,&quot;SearchPageId&quot;:65227,&quot;totaltake&quot;:3,&quot;NoHitHighlight&quot;:true,&quot;controlid&quot;:&quot;e66c8a2b95fa4737807131d2d8401b88&quot;, &quot;sortorder&quot;:&quot;titleasc&quot;,&quot;mainfacet&quot;:&quot;65227|Personer|2|False&quot;,&quot;querytext&quot;:&quot;test&quot;}"
            search-url="http://localhost:2000/production/KitModules/EPiFind/Services/SearchService.asmx/QueryFreeText"></searchlistblock>
    </div>
</div>
<div class="enablevue">
    <div class="block searchlistblock">
    {{#if heading}}
              <div class="block-header ">
                <h2 class="heading-level-2">{{heading}}</h2>
              </div>
      {{/if}}
      <searchlistblock v-cloak room-text="{{componentStrings.room}}" personel-layout="{{personelLayout}}" init-data="{{initData}}" search-url="{{queryFreeTextUrl}}"></searchlistblock>
    </div>
  </div>
{
  "heading": "myHeading",
  "initData": "{\"ShowAllSearchSection\":true,\"CurrentPageId\":198772,\"currentPageLink\":\"https://miun_extern_local_v1/ny-design/blocktyper/searchlist/\",\"lang\":\"sv\",\"SearchPageId\":65227,\"totaltake\":3,\"NoHitHighlight\":true,\"controlid\":\"e66c8a2b95fa4737807131d2d8401b88\", \"sortorder\":\"titleasc\",\"mainfacet\":\"65227|Personer|2|False\",\"querytext\":\"test\"}",
  "queryFreeTextUrl": "http://localhost:2000/production/KitModules/EPiFind/Services/SearchService.asmx/QueryFreeText",
  "personelLayout": "True",
  "componentStrings": {
    "room": "Rum"
  },
  "epiDivClass": "col-md-10 offset-md-1 col-lg-8 offset-lg-2 enablevue vld-parent"
}
  • Content:
    Vue.component("searchlistblock", {
      props: ["initData", "searchUrl","personelLayout", "roomText"],
      data() {
        return {
          url: this.searchUrl,
          query: 'Företag',
          queryPersonel: 'koordinator',
          personal: (this.personelLayout.toLowerCase() == "true"), 
          dataResults: [],
          personalText: 'personal',
          loading: false,
          room: this.roomText
        };
      },
      computed: {
        personelByLastname: function() {
          return _.orderBy(this.dataResults, "surname", ["asc"]);
        }
      },
      mounted() {
        if (this.personal) {
          this.query = this.queryPersonel;
        }
        this.search(this.query);
      },
      methods: {
        async search(query) {
          this.loading = true;
          let initData = {
            ...JSON.parse(this.initData)
          };
          let req = {
            query: {
              querytext: initData.querytext,
              mainfacet: initData.mainfacet,
              facets: [],
              metafacets: initData.metafacets,
              take: initData.totaltake,
              skip: 0,
              returnSuggestions: true,
              addSuggestionsToQuery: false,
              sortorder: initData.sortorder,
              SearchPageId: initData.SearchPageId,
              Language: initData.lang,
              NoHitHighlight: true,
              DoNotTrack: true
            }
          };
          console.log(req);
          await axios.post(this.url,req)
            .then(result => { 
              this.loading = false;
              
              console.log("asd")
              if(result && result.data && result.data.d && result.data.d.SearchHits && result.data.d.SearchHits.length > 0) {
                let persons = result.data.d.SearchHits;
    
                 persons.map(person => {
                  if(person.Title) {
                    let name = person.Title;
                    let surname = name.split(" ")[1];
                    person.surname = surname
                  }
                })
              }
              this.dataResults = result.data.d.SearchHits;
            })
            .catch(error => { this.loading = false; console.error(error); throw error; });
        },
        todate (date) {
          var matches = date.match(/\((.*?)\)/);
          var a = new Date(parseInt(matches[1]));
          var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
          var year = a.getFullYear();
          var month = months[a.getMonth()];
          var datum = a.getDate();
          var result = datum+' '+month+' ' +year;
          return result;
        }
      },
      template: `
          <div class="searchresultblock_personal block-content" >
                <vloading :height="32" :width="32" :color="'#404040'" :is-full-page="false" :active.sync="loading"></vloading>
                
                    <div class="overflow-hidden" v-if="personal">
                    <a :href="result.Url" :key="result.Id"  :title="result.Title" v-for="result in personelByLastname" class="personal_result_tag">
                      <article  class="personal_result row">
                        <div class="col-12 col-md-auto">
                            <div class="searchresultblock_img_container" v-if="result.MetaData.PersonalImage.StringValue">
                              <div class="lazyload searchresultblock_img_person" :data-bg="result.MetaData.PersonalImage.StringValue" :alt="result.Title"></div>
                            </div>
                        </div>
                        <div class="col-12 col-md-10">
                            <h3 class="personal__title heading-level-3" v-html="result.Title"></h3>
                            <div class="result-card-info d-flex flex-row flex-wrap align-items-center " v-if="result && result.MetaData">
                              <p v-if="result.MetaData.Title && result.MetaData.Title.StringValue">{{result.MetaData.Title.StringValue}}</p>
                              <p v-if="result.MetaData.AreaOfResponsibility && result.MetaData.AreaOfResponsibility.StringValue">
                                &nbsp;{{result.MetaData.AreaOfResponsibility.StringValue}}
                              </p>
                            </div>
                            <div class="person-card-info d-flex flex-row flex-wrap align-items-center" v-if="result && result.MetaData && result.MetaData.RoomNumber || result.MetaData.Location">
                              <p v-if="result.MetaData.RoomNumber && result.MetaData.RoomNumber.StringValue">{{room}}:&nbsp;</p>
                              <p v-if="result.MetaData.RoomNumber && result.MetaData.RoomNumber.StringValue">{{result.MetaData.RoomNumber.StringValue}}</p>
                              <p v-if="result.MetaData.Title && result.MetaData.Location.StringValue">
                                <template v-if="result && result.MetaData && result.MetaData.RoomNumber && result.MetaData.RoomNumber.StringValue && result.MetaData.Location && result.MetaData.Location.StringValue">, </template>
                                {{result.MetaData.Location.StringValue}}
                              </p>
                            </div>
                            <p class="result-card-info" v-if="result.MetaData.TelephoneNumber && result.MetaData.TelephoneNumber.StringValue">{{result.MetaData.TelephoneNumber.StringValue}}</p>
                            <a class="result-email" :href="'mailto:' + result.MetaData.Email.StringValue" v-if="result.MetaData.Email && result.MetaData.Email.StringValue">{{result.MetaData.Email.StringValue}}</a>
                        </div>
                      </article>
                    </a>
                    </div>
                    <div v-else>
                      <a :key="result.Id" :href="result.Url" :title="result.Title" v-for="result in dataResults" class="personal_result_tag">
                        <article class="personal_result ">
                            <h3 class="personal__title heading-level-3" v-html="result.Title"></h3>
                            <p v-html="result.Content"></p>
                            <p class="date">{{todate(result.SearchPublishDate)}}</p>
                        </article>
                      </a>
                    </div>
          </div>
        `
    });
  • URL: /components/raw/searchlistblock/SearchListBlock.js
  • Filesystem Path: src\components\02-block_components\SearchListBlock\SearchListBlock.js
  • Size: 6.1 KB
  • Content:
    .searchlistblock{
        &:last-child{
            margin-bottom: $md-space;
        }
    }
    
    .searchresultblock_personal{
        .personal_result_tag{
            &:first-child{
                .personal_result{
                    border-top: none;
                    padding-top: 0px;
                }
            }
            &:hover{
                text-decoration: none;
                .personal__title{
                    text-decoration: underline !important;
                }
                .personal__content{
                    text-decoration: none;
                }
                .personal__additional{
                    text-decoration: none;
                }
            }
            .personal_result{
                padding-top: $sm-space;
                padding-bottom: $sm-space;
                border-top: 1px solid $grey-border;
                margin-bottom: 0px !important;
    
                .result-email{
                    color: $blue;
                }
            }
        }
        .searchresultblock_img_container{
            height: 80px;
            width: 80px;
            border-radius: 100%;
            overflow: hidden;
            transition: all 0.3s ease 0s;
            margin-bottom: $xs-space;
            .searchresultblock_img_person{
                height: 100%;
                width: 100%;
                border-radius: 50%;
                background-size: cover;
                background-position: center;
            }
        }
    }
  • URL: /components/raw/searchlistblock/SearchListBlock.scss
  • Filesystem Path: src\components\02-block_components\SearchListBlock\SearchListBlock.scss
  • Size: 1.4 KB

There are no notes for this item.