Browse Source
			
			
			
			
				
		Reviewed-on: https://gitea.anomalistdesign.com/jsnbuchanan/crowd-funder-for-time-pwa/pulls/1profile-pic
				 37 changed files with 3221 additions and 4943 deletions
			
			
		
								
									
										File diff suppressed because it is too large
									
								
							
						
					@ -0,0 +1,219 @@ | 
				
			|||
<template> | 
				
			|||
  <div v-if="visible" id="dialogFeedFilters" class="dialog-overlay"> | 
				
			|||
    <div class="dialog"> | 
				
			|||
      <h1 class="text-xl font-bold text-center mb-4">Feed Filters</h1> | 
				
			|||
 | 
				
			|||
      <p class="mb-4 font-bold">Show only activities that…</p> | 
				
			|||
 | 
				
			|||
      <div class="grid grid-cols-1 gap-2"> | 
				
			|||
        <div | 
				
			|||
          class="flex items-center justify-between cursor-pointer" | 
				
			|||
          @click="toggleHasVisibleDid()" | 
				
			|||
        > | 
				
			|||
          <!-- label --> | 
				
			|||
          <div>Include someone visible to me</div> | 
				
			|||
          <!-- toggle --> | 
				
			|||
          <div class="relative ml-2"> | 
				
			|||
            <!-- input --> | 
				
			|||
            <input | 
				
			|||
              type="checkbox" | 
				
			|||
              v-model="hasVisibleDid" | 
				
			|||
              name="toggleFilterFromMyContacts" | 
				
			|||
              class="sr-only" | 
				
			|||
            /> | 
				
			|||
            <!-- line --> | 
				
			|||
            <div class="block bg-slate-500 w-14 h-8 rounded-full"></div> | 
				
			|||
            <!-- dot --> | 
				
			|||
            <div | 
				
			|||
              class="dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition" | 
				
			|||
            ></div> | 
				
			|||
          </div> | 
				
			|||
        </div> | 
				
			|||
 | 
				
			|||
        <em>or</em> | 
				
			|||
 | 
				
			|||
        <div | 
				
			|||
          class="flex items-center justify-between cursor-pointer" | 
				
			|||
          @click=" | 
				
			|||
            hasSearchBox | 
				
			|||
              ? toggleNearby() | 
				
			|||
              : $router.push({ name: 'search-area' }) | 
				
			|||
          " | 
				
			|||
        > | 
				
			|||
          <!-- label --> | 
				
			|||
          <div>Are nearby</div> | 
				
			|||
          <!-- toggle --> | 
				
			|||
          <div v-if="hasSearchBox" class="relative ml-2"> | 
				
			|||
            <!-- input --> | 
				
			|||
            <input | 
				
			|||
              type="checkbox" | 
				
			|||
              v-model="isNearby" | 
				
			|||
              name="toggleFilterNearby" | 
				
			|||
              class="sr-only" | 
				
			|||
            /> | 
				
			|||
            <!-- line --> | 
				
			|||
            <div class="block bg-slate-500 w-14 h-8 rounded-full"></div> | 
				
			|||
            <!-- dot --> | 
				
			|||
            <div | 
				
			|||
              class="dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition" | 
				
			|||
            ></div> | 
				
			|||
          </div> | 
				
			|||
          <div v-else class="relative ml-2"> | 
				
			|||
            <button class="ml-2 px-4 py-2 rounded-md bg-blue-200 text-blue-500"> | 
				
			|||
              Select Location | 
				
			|||
            </button> | 
				
			|||
          </div> | 
				
			|||
        </div> | 
				
			|||
      </div> | 
				
			|||
 | 
				
			|||
      <div class="grid grid-cols-1 sm:grid-cols-3 gap-2 mt-4"> | 
				
			|||
        <button | 
				
			|||
          class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" | 
				
			|||
          @click="setAll()" | 
				
			|||
        > | 
				
			|||
          Set All | 
				
			|||
        </button> | 
				
			|||
        <button | 
				
			|||
          class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" | 
				
			|||
          @click="clearAll()" | 
				
			|||
        > | 
				
			|||
          Clear All | 
				
			|||
        </button> | 
				
			|||
        <button | 
				
			|||
          class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" | 
				
			|||
          @click="done()" | 
				
			|||
        > | 
				
			|||
          Done | 
				
			|||
        </button> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script lang="ts"> | 
				
			|||
import { Vue, Component } from "vue-facing-decorator"; | 
				
			|||
import { | 
				
			|||
  LMap, | 
				
			|||
  LMarker, | 
				
			|||
  LRectangle, | 
				
			|||
  LTileLayer, | 
				
			|||
} from "@vue-leaflet/vue-leaflet"; | 
				
			|||
 | 
				
			|||
import { MASTER_SETTINGS_KEY } from "@/db/tables/settings"; | 
				
			|||
import { db } from "@/db/index"; | 
				
			|||
 | 
				
			|||
@Component({ | 
				
			|||
  components: { | 
				
			|||
    LRectangle, | 
				
			|||
    LMap, | 
				
			|||
    LMarker, | 
				
			|||
    LTileLayer, | 
				
			|||
  }, | 
				
			|||
}) | 
				
			|||
export default class FeedFilters extends Vue { | 
				
			|||
  onCloseIfChanged = () => {}; | 
				
			|||
  hasSearchBox = false; | 
				
			|||
  hasVisibleDid = false; | 
				
			|||
  isNearby = false; | 
				
			|||
  settingChanged = false; | 
				
			|||
  visible = false; | 
				
			|||
 | 
				
			|||
  async open(onCloseIfChanged: () => void) { | 
				
			|||
    this.onCloseIfChanged = onCloseIfChanged; | 
				
			|||
 | 
				
			|||
    await db.open(); | 
				
			|||
    const settings = await db.settings.get(MASTER_SETTINGS_KEY); | 
				
			|||
    this.hasVisibleDid = !!settings?.filterFeedByVisible; | 
				
			|||
    this.isNearby = !!settings?.filterFeedByNearby; | 
				
			|||
    if (settings?.searchBoxes && settings.searchBoxes.length > 0) { | 
				
			|||
      this.hasSearchBox = true; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    this.settingChanged = false; | 
				
			|||
    this.visible = true; | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  toggleHasVisibleDid() { | 
				
			|||
    this.settingChanged = true; | 
				
			|||
    this.hasVisibleDid = !this.hasVisibleDid; | 
				
			|||
    db.settings.update(MASTER_SETTINGS_KEY, { | 
				
			|||
      filterFeedByVisible: this.hasVisibleDid, | 
				
			|||
    }); | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  toggleNearby() { | 
				
			|||
    this.settingChanged = true; | 
				
			|||
    this.isNearby = !this.isNearby; | 
				
			|||
    db.settings.update(MASTER_SETTINGS_KEY, { | 
				
			|||
      filterFeedByNearby: this.isNearby, | 
				
			|||
    }); | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  async clearAll() { | 
				
			|||
    if (this.hasVisibleDid || this.isNearby) { | 
				
			|||
      this.settingChanged = true; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    db.settings.update(MASTER_SETTINGS_KEY, { | 
				
			|||
      filterFeedByNearby: false, | 
				
			|||
      filterFeedByVisible: false, | 
				
			|||
    }); | 
				
			|||
 | 
				
			|||
    this.hasVisibleDid = false; | 
				
			|||
    this.isNearby = false; | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  async setAll() { | 
				
			|||
    if (!this.hasVisibleDid || !this.isNearby) { | 
				
			|||
      this.settingChanged = true; | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    db.settings.update(MASTER_SETTINGS_KEY, { | 
				
			|||
      filterFeedByNearby: true, | 
				
			|||
      filterFeedByVisible: true, | 
				
			|||
    }); | 
				
			|||
 | 
				
			|||
    this.hasVisibleDid = true; | 
				
			|||
    this.isNearby = true; | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  close() { | 
				
			|||
    if (this.settingChanged) { | 
				
			|||
      this.onCloseIfChanged(); | 
				
			|||
    } | 
				
			|||
    this.visible = false; | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  done() { | 
				
			|||
    this.close(); | 
				
			|||
  } | 
				
			|||
} | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style> | 
				
			|||
.dialog-overlay { | 
				
			|||
  position: fixed; | 
				
			|||
  top: 0; | 
				
			|||
  left: 0; | 
				
			|||
  right: 0; | 
				
			|||
  bottom: 0; | 
				
			|||
  background-color: rgba(0, 0, 0, 0.5); | 
				
			|||
  display: flex; | 
				
			|||
  justify-content: center; | 
				
			|||
  align-items: center; | 
				
			|||
  padding: 1.5rem; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
#dialogFeedFilters.dialog-overlay { | 
				
			|||
  z-index: 99999; | 
				
			|||
  overflow: scroll; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
.dialog { | 
				
			|||
  background-color: white; | 
				
			|||
  padding: 1rem; | 
				
			|||
  border-radius: 0.5rem; | 
				
			|||
  width: 100%; | 
				
			|||
  max-width: 500px; | 
				
			|||
} | 
				
			|||
</style> | 
				
			|||
@ -0,0 +1,69 @@ | 
				
			|||
<template> | 
				
			|||
  <!-- Don't include nav buttons since this is shown in a different window. --> | 
				
			|||
 | 
				
			|||
  <!-- CONTENT --> | 
				
			|||
  <section id="Content" class="p-6 pb-24 max-w-3xl mx-auto"> | 
				
			|||
    <!-- Breadcrumb --> | 
				
			|||
    <div class="mb-8"> | 
				
			|||
      <!-- Don't include 'back' button since this is shown in a different window. --> | 
				
			|||
      <!-- Heading --> | 
				
			|||
      <h1 id="ViewHeading" class="text-4xl text-center font-light pt-4 mb-8"> | 
				
			|||
        Time Safari Onboarding Instructions | 
				
			|||
      </h1> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <!-- eslint-disable prettier/prettier --> | 
				
			|||
    <div class="ml-4"> | 
				
			|||
      <h1 class="font-bold text-xl">Install</h1> | 
				
			|||
      <div> | 
				
			|||
        <p> | 
				
			|||
          1) Have them visit TimeSafari.app in a browser, preferably Chrome or Safari. | 
				
			|||
        </p> | 
				
			|||
        <p> | 
				
			|||
          2) Have them "Install" the site to their desktop. | 
				
			|||
        </p> | 
				
			|||
      </div> | 
				
			|||
 | 
				
			|||
      <h1 class="font-bold text-xl">Add Contact & Register</h1> | 
				
			|||
      <div> | 
				
			|||
        <p> | 
				
			|||
          3) Have them follow their yellow prompts. | 
				
			|||
        </p> | 
				
			|||
        <p> | 
				
			|||
          4) Add them to your contacts <fa icon="users" /> | 
				
			|||
        </p> | 
				
			|||
        <p> | 
				
			|||
          5) Register them <fa icon="person-circle-question" /> | 
				
			|||
        </p> | 
				
			|||
        <p> | 
				
			|||
          6) Add yourself to their contacts <fa icon="users" /> | 
				
			|||
        </p> | 
				
			|||
      </div> | 
				
			|||
 | 
				
			|||
      <h1 class="font-bold text-xl">Enable Notifications</h1> | 
				
			|||
      <div> | 
				
			|||
        <p> | 
				
			|||
          7) Enable notifications from <fa icon="circle-user" /> | 
				
			|||
        </p> | 
				
			|||
      </div> | 
				
			|||
 | 
				
			|||
      <h1 class="font-bold text-xl">Discuss Backups</h1> | 
				
			|||
      <div> | 
				
			|||
        <p> | 
				
			|||
          8) Exporting backups <fa icon="circle-user" /> are important if they lose their phone --- especially for the Identifier Seed! | 
				
			|||
        </p> | 
				
			|||
      </div> | 
				
			|||
 | 
				
			|||
    </div> | 
				
			|||
    <!-- eslint enable --> | 
				
			|||
  </section> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script lang="ts"> | 
				
			|||
import { Component, Vue } from "vue-facing-decorator"; | 
				
			|||
 | 
				
			|||
import QuickNav from "@/components/QuickNav.vue"; | 
				
			|||
 | 
				
			|||
@Component({ components: { QuickNav } }) | 
				
			|||
export default class Help extends Vue {} | 
				
			|||
</script> | 
				
			|||
					Loading…
					
					
				
		Reference in new issue